//
//  ZCAddressBook.h
//  通讯录Demo
//
//  Created by ZhangCheng on 14-4-19.
//  Copyright (c) 2014年 zhangcheng. All rights reserved.
//

/*
 代码示例
 1、使用本类需要加入MessageUI~AddressBookUI~AddressBook3个系统库
 2、还需要有pingyin文件
 3、发送短信需要使用真机才可以
 */

#import <Foundation/Foundation.h>
#import <MessageUI/MessageUI.h> //短信库
#import <AddressBook/AddressBook.h> //通讯录UI库
#import <AddressBookUI/AddressBookUI.h> //通讯录库
#import <Contacts/Contacts.h> //iOS9通讯录库
#import <ContactsUI/ContactsUI.h> //iOS9UI的库

#define kiOS9 [[UIDevice currentDevice].systemVersion floatValue]>=9.0
//通讯录中联系人的状态
enum {
    ABHelperCanNotConncetToAddressBook,  //不能打开通讯录
    ABHelperExistSpecificContact,    //号码已存在
    ABHelperNotExistSpecificContact   //号码不存在
};typedef NSUInteger ABHelperCheckExistResultType;

@interface ZCAddressBook : NSObject<MFMessageComposeViewControllerDelegate,ABPeoplePickerNavigationControllerDelegate,CNContactPickerDelegate>

@property(nonatomic,assign) id target;
@property(nonatomic,copy)void(^MessageBlock)(int); //发送消息的block
@property(nonatomic,copy)void(^PhoneBlock)(BOOL,NSDictionary*);
@property(nonatomic,retain)NSMutableArray *dataArray; //保存排序好的数组index
@property(nonatomic,retain)NSMutableArray *dataArrayDic; //数组里面保存每个获取Vcard（名片）

+ (ZCAddressBook*)shareControl; //获得单例

#pragma  mark  添加联系人
//- (BOOL)addContactName:(NSString*)name phoneNum:(NSString*)num withLabel:(NSString*)label;//iOS9 label标签无效

/**
 *  添加联系人
 *
 *  @param name 姓名
 *  @param num  手机号
 *
 *  @return 是否添加成功
 */
- (BOOL)addContactName:(NSString*)name phoneNum:(NSString*)num;

-(NSMutableDictionary*)getPersonInfo; //获取Vcard,联系人

-(NSArray*)sortMethod;  //Vcard序列，序列索引,key是A-Z的标记   每个value是数组，每个数组成员是字典，每个字典记录每个联系人的具体内容

/**
 *  调用系统控件发送短信,群发，可以有指定内容
 *
 *  @param array  接收短信人列表
 *  @param str    消息内容
 *  @param target 可指定控制器
 *  @param a      ^(BOOL isSuccess, NSDictionary *dic) 是否成功
 */
-(void)showSystemMessageToListArray:(NSArray*)array Message:(NSString*)str ViewController:(id)target Block:(void(^)(int))a;

+(void)sendMessage:(NSString*)phoneNum;  //使用系统方式进行发送短信，但是短信内容无法规定,会跳出程序 phoneNum传入数字


/**
 *  调用系统控件，选中后获得指定人信息
 *
 *  @param target self
 *  @param a
 */
-(void)showPhoneViewWithTarget:(id)target Block:(void(^)(BOOL,NSDictionary*))a;


- (ABHelperCheckExistResultType)existPhone:(NSString*)phoneNum;  //查找通讯录中是否有这个联系人
@end
